package dataProviders;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.LinkedList;

import dataBase.DataBaseController;
import dataBase.QueryDB;

import entities.Badanie;


public class BadanieDataProvider {
	static QueryDB db = new QueryDB();

	public static String pobierzNazweTypuBadania(int typBadaniaID)
	{
		String sql = "SELECT nazwa FROM typy_badan WHERE typBadaniaID = "+typBadaniaID;
		try {
			ResultSet wynik = db.dbSqlQuery(sql);
			wynik.next();
//			System.out.println("Nazwa typu badania: "+wynik.getString("nazwa"));
			return wynik.getString("nazwa");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}
	public static LinkedList<Badanie> getNiezbadaneBadania()
	{
		LinkedList<Badanie> tmpLista= new LinkedList<Badanie>();
		try 
		{
			ResultSet wynik = DataBaseController.db.dbSqlQuery( "SELECT badanieID, priorytet, wyniki, dataWykonania, uwagi, dataWeryfikacji, dataOdbioru, magisterID, technikID, rejestratorID, probkaID, typBadanID "+
			" FROM badania WHERE dataWykonania IS NULL");
			while(wynik.next())
			{
				Badanie badanie = new Badanie();
				badanie.setBadanieID(Integer.parseInt(wynik.getString("badanieID")));
				badanie.setPriorytet(Integer.parseInt(wynik.getString("priorytet")));
				badanie.setUwagi(wynik.getString("uwagi"));
				badanie.setRejestratorID(Integer.parseInt(wynik.getString("rejestratorID")));
				badanie.setProbkaID(Integer.parseInt(wynik.getString("probkaID")));
				badanie.setTypBadanID(Integer.parseInt(wynik.getString("typBadanID")));
				//KontrOsoba(wynik.getInt("fizycznaID"),wynik.getString("telefon"),wynik.getString("email"),wynik.getString("ulica"),wynik.getString("numer"),wynik.getString("kodPocztowy"),wynik.getString("miasto"),wynik.getString("imie"),wynik.getString("nazwisko"),wynik.getString("pesel"),wynik.getString("nip"));
				tmpLista.add( badanie );
			}
//			System.out.println("Pobrano "+ tmpLista.size()+" nieznanych badan.");
			return tmpLista;
		} 
		catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	public static LinkedList<Badanie> getNiezweryfikowaneBadania()
	{
		LinkedList<Badanie> tmpLista= new LinkedList<Badanie>();
		try 
		{
			ResultSet wynik = DataBaseController.db.dbSqlQuery( "SELECT badanieID, priorytet, wyniki, dataWykonania, uwagi, dataWeryfikacji, dataOdbioru, magisterID, technikID, rejestratorID, probkaID, typBadanID "+
			" FROM badania WHERE dataWykonania IS NOT NULL AND dataWeryfikacji IS NULL");
			while(wynik.next())
			{
				Badanie badanie = new Badanie();
				badanie.setBadanieID(Integer.parseInt(wynik.getString("badanieID")));
				badanie.setPriorytet(Integer.parseInt(wynik.getString("priorytet")));
				badanie.setUwagi(wynik.getString("uwagi"));
				badanie.setRejestratorID(Integer.parseInt(wynik.getString("rejestratorID")));
				badanie.setProbkaID(Integer.parseInt(wynik.getString("probkaID")));
				badanie.setTypBadanID(Integer.parseInt(wynik.getString("typBadanID")));
				badanie.setTechnikID(Integer.parseInt(wynik.getString("technikID")));
				badanie.setDataWykonania(wynik.getString("dataWykonania"));
				badanie.setWyniki(wynik.getString("wyniki"));
				//KontrOsoba(wynik.getInt("fizycznaID"),wynik.getString("telefon"),wynik.getString("email"),wynik.getString("ulica"),wynik.getString("numer"),wynik.getString("kodPocztowy"),wynik.getString("miasto"),wynik.getString("imie"),wynik.getString("nazwisko"),wynik.getString("pesel"),wynik.getString("nip"));
				tmpLista.add( badanie );
			}
//			System.out.println("Pobrano "+ tmpLista.size()+" nieznanych badan.");
			return tmpLista;
		} 
		catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	public static LinkedList<Badanie> getDoOdbioruBadania()
	{
		LinkedList<Badanie> tmpLista = new LinkedList<Badanie>();
		try 
		{
			ResultSet wynik = DataBaseController.db.dbSqlQuery( "SELECT badanieID, priorytet, wyniki, dataWykonania, uwagi, dataWeryfikacji, dataOdbioru, magisterID, technikID, rejestratorID, probkaID, typBadanID FROM badania WHERE dataWykonania IS NOT NULL AND dataWeryfikacji IS NOT NULL AND dataOdbioru IS NULL");
			while(wynik.next())
			{
				Badanie badanie = new Badanie();
				badanie.setBadanieID(Integer.parseInt(wynik.getString("badanieID")));
				badanie.setPriorytet(Integer.parseInt(wynik.getString("priorytet")));
				badanie.setUwagi(wynik.getString("uwagi"));
				badanie.setRejestratorID(Integer.parseInt(wynik.getString("rejestratorID")));
				badanie.setProbkaID(Integer.parseInt(wynik.getString("probkaID")));
				badanie.setTypBadanID(Integer.parseInt(wynik.getString("typBadanID")));
				badanie.setTechnikID(Integer.parseInt(wynik.getString("technikID")));
				badanie.setDataWykonania(wynik.getString("dataWykonania"));
				badanie.setDataWeryfikacji(wynik.getString("dataWeryfikacji"));
				badanie.setWyniki(wynik.getString("wyniki"));
				//KontrOsoba(wynik.getInt("fizycznaID"),wynik.getString("telefon"),wynik.getString("email"),wynik.getString("ulica"),wynik.getString("numer"),wynik.getString("kodPocztowy"),wynik.getString("miasto"),wynik.getString("imie"),wynik.getString("nazwisko"),wynik.getString("pesel"),wynik.getString("nip"));
				tmpLista.add( badanie );
			}
//			System.out.println("Pobrano "+ tmpLista.size()+" Zweryfikowanych badan.");
			return tmpLista;
		} 
		catch (SQLException e) {
			e.printStackTrace();
			return null;
		}
	}
	public static int ostatniTypBadaniaId()
	{
		int ostatnieId = -1;
		try 
		{
			String sql ="SELECT MAX(typBadaniaID) FROM Typy_badan";
			ResultSet wynik = DataBaseController.db.dbSqlQuery( sql);
			while( wynik.next() )
			{
				ostatnieId = wynik.getInt(1);				
			}
			return ostatnieId;
		} 
		catch(SQLException e) 
		{
			e.printStackTrace();
			return ostatnieId;
		}
	}
	public static LinkedList<Badanie> getListaZweryfikowanychBadanKontrahenta(int id, boolean czyFirma)
	{
		LinkedList<Badanie> tmpLista = new LinkedList<Badanie>();
		try 
		{
			ResultSet wynik;
			if(czyFirma==true)
			{
					wynik = DataBaseController.db.dbSqlQuery("SELECT badanieID, priorytet, wyniki, dataWykonania, Badania.uwagi, dataWeryfikacji, dataOdbioru, magisterID, technikID, rejestratorID, Badania.probkaID, typBadanID"+
					" FROM Badania JOIN Probki ON Badania.ProbkaID = Probki.ProbkaID"+
					" WHERE Probki.kontrahentID='"+id+"' AND dataWykonania IS NOT NULL AND dataWeryfikacji IS NOT NULL AND dataOdbioru IS NULL");
			}
			else
			{
				wynik = DataBaseController.db.dbSqlQuery("SELECT badanieID, priorytet, wyniki, dataWykonania, Badania.uwagi, dataWeryfikacji, dataOdbioru, magisterID, technikID, rejestratorID, Badania.probkaID, typBadanID"+
				" FROM Badania JOIN Probki ON Badania.ProbkaID = Probki.ProbkaID"+
				" WHERE Probki.kontrahentFizycznyID='"+id+"' AND dataWykonania IS NOT NULL AND dataWeryfikacji IS NOT NULL AND dataOdbioru IS NULL");
			}
			while(wynik.next())
			{
				Badanie badanie = new Badanie();
				badanie.setBadanieID(Integer.parseInt(wynik.getString("badanieID")));
				badanie.setPriorytet(Integer.parseInt(wynik.getString("priorytet")));
				badanie.setUwagi(wynik.getString("uwagi"));
				badanie.setRejestratorID(Integer.parseInt(wynik.getString("rejestratorID")));
				badanie.setProbkaID(Integer.parseInt(wynik.getString("probkaID")));
				badanie.setTypBadanID(Integer.parseInt(wynik.getString("typBadanID")));
				badanie.setTechnikID(Integer.parseInt(wynik.getString("technikID")));
				badanie.setDataWykonania(wynik.getString("dataWykonania"));
				badanie.setDataWeryfikacji(wynik.getString("dataWeryfikacji"));
				badanie.setWyniki(wynik.getString("wyniki"));
				//KontrOsoba(wynik.getInt("fizycznaID"),wynik.getString("telefon"),wynik.getString("email"),wynik.getString("ulica"),wynik.getString("numer"),wynik.getString("kodPocztowy"),wynik.getString("miasto"),wynik.getString("imie"),wynik.getString("nazwisko"),wynik.getString("pesel"),wynik.getString("nip"));
				tmpLista.add( badanie );
			}
//			System.out.println("Pobrano "+ tmpLista.size()+" Zweryfikowanych badan.");
			return tmpLista;
		} 
		catch (SQLException e) {
			e.printStackTrace();
			return null;
		}		
	}

}
